package cn.tedu.jsd2205the.back.end.project.mapper;


import cn.tedu.jsd2205the.back.end.project.pojo.entity.ShopCart;
import cn.tedu.jsd2205the.back.end.project.pojo.vo.ShopCartSimpleVO;
import cn.tedu.jsd2205the.back.end.project.pojo.vo.ShopCartVO;
import io.lettuce.core.dynamic.annotation.Param;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
public interface ShopCartMapper {
    /**
     * 添加购物车
     * @param shopCart
     */
    int insert(ShopCart shopCart);

    /**
     * 批量添加购物车
     * @param list
     */
    int insertList(List<ShopCart> list);

    /**
     * 根据id删除购物车
     * @param id
     */
    int deleteById(String id);

    /**
     * 根据用户id删除购物车
     * @param userId
     */
    int deleteByUserId(String userId);

    /**
     * 根据id查询购物车
     * @param id
     * @return
     */
    ShopCartVO selectById(String id);

    /**
     * 根据用户id查询购物车
     * @param userId 用户id
     * @return
     */
    List<ShopCartVO> selectByUserId(String userId);

    /**
     * 根据用户id查询购物车数量
     * @param userId 用户id
     * @return
     */
    int selectCount(String userId);

    /**
     * 根据用户ID和商品id查询购物车
     * @param userId 用户id
     * @param productId 商品id
     */
    ShopCartSimpleVO selectByUserIdAndProductId(
            @io.lettuce.core.dynamic.annotation.Param("userId") String userId,
            @Param("productId") int productId
    );

    /**
     * 根据id修改购物车中的商品数量
     * @param id 购物车id
     * @param quantity 购物车商品数量
     */
    int updateQuantityById(@Param("id") String id, @Param("quantity") int quantity);

    /**
     * 根据id修改购物车金额
     * @param id 购物车id
     * @param money 购物车金额
     */
    int updateMoneyById(String id, double money);

}